<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Calendario_model extends CI_MODEL
{

    private $config = array();

    public function __construct()
    {
        parent::__construct();

        //  if($this->uri->segment(1) == 'calen_aviso'){
            //url de la función que le da los datos al calendario cuando pulsamos next o prev
           // $url =  'http://localhost/puntos-de-interes-universitarios/calendario/cal/';
          //  $url = 'http://localhost/puntos-de-interes-universitarios/calen_aviso/cal';
       // }

    $sede=($this->uri->segment("3")== '0') ? '0' : $this->uri->segment("3") ;
        $this->config = array(
            //día que queremos que empiece la semana
            'start_day' => 'lunes',

            //si queremos mostrar los links para avanzar y retroceder en el calendario
            'show_next_prev' => TRUE,

        
            //url de la función que le da los datos al calendario cuando pulsamos next o prev
          //  'next_prev_url' => 'http://localhost/puntos-de-interes-universitarios/calendario/cal/'
         'next_prev_url' => base_url('calendario/'.$this->uri->segment("2").'/'.$sede),
                      
        );

        $this->config['template'] = '
        //abrimos la tabla del calendario
        {table_open}<table id="calendario">{/table_open}

        //abrimos la cabecera del calendario
        {heading_row_start}<tr id="cabecera-calendario">{/heading_row_start}

        //enlace anterior
        {heading_previous_cell}<th><a id="links" class="previo" href="{previous_url}"><i class="entypo-left-open"></i></a></th>{/heading_previous_cell}

        //fecha entre los enlaces de la cabecera
        {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}

        //enlace siguiente
        {heading_next_cell}<th><a id="links" class="siguiente" href="{next_url}"><i class="entypo-right-open"></i></a></th>{/heading_next_cell}

        //cerramos la cabecera del calendario
        {heading_row_end}</tr >{/heading_row_end}

        //días de la semana --> lunes => martes etc
        {week_row_start}<tr id="titulo-calendario"> {/week_row_start}
        {week_day_cell}<td class="head_calendar">{week_day}</td>{/week_day_cell}
        {week_row_end}</tr>{/week_row_end}
        //fin días de la semana


        {cal_row_start}<tr class="dias">{/cal_row_start}
        {cal_cell_start}<td class="dia">{/cal_cell_start}

        {cal_cell_content}
        <div class="num_dia">{day}</div>
        <div class="contenido">{content}</div>
        {/cal_cell_content}

        {cal_cell_content_today}
        <div class="hoy">{day}</div>
        <div class="contenido_hoy">{content}</div>
        {/cal_cell_content_today}

        {cal_cell_no_content}
        <div class="num_dia">{day}</div>
        {/cal_cell_no_content}

        //el día actual
        {cal_cell_no_content_today}
        <div class="highlight">{day}</div>
        {/cal_cell_no_content_today}

        {cal_cell_blank}&nbsp;{/cal_cell_blank}
        {cal_cell_end}</td>{/cal_cell_end}
        {cal_row_end}</tr>{/cal_row_end}

        //cerramos el calendario
        {table_close}</table>{/table_close}
        ';
    }

    //cogemos los datos de la tabla eventos y la colocamos en cada día
    //del calendario
    public function get_datos_calendario($year, $month)
    {
        $this->db->select('me.*,ma.nombre');
        $this->db->from('mesas_examen me');
        $this->db->join('materia ma','me.id_materia=ma.id_materia'); 
        $this->db->like('me.fecha', "$year-$month", 'after');
        $query= $this->db->get();

        $datos_calendario = array();
        foreach ($query->result() as $row) 
        {
            //si el primer número encontrado a partir del octavo
            //encontrado en la fecha es un cero, es decir, los días 
            //01,02,03 etc le quitamos el 0 y mostramos el siguiente número
            //si no lo hacemos así nuestro calendario no mostrará los resultados
            //de los días del 1 al 9
            $index = ltrim(substr($row->fecha, 8, 2), '0');
            //datos calendario contiene la fila del comentario del evento de ese día
            if (isset($datos_calendario[$index])) {
                $datos_calendario[$index] .= '<p id="dato-calendario">'.$row->nombre.'</br>'.$row->hora.'&nbsp'.'&nbsp'.$row->aula.'</p>';
            }else{
                $datos_calendario[$index] = '<p id="dato-calendario">'.$row->nombre.'</br>'.$row->hora.'&nbsp'.'&nbsp'.$row->aula.'</p>';
            }
        }
        //devolvemos los datos y así ya podemos pasarle estos datos al método genera_calendario($year, $month)
        return $datos_calendario;
    }

    public function get_aviso_calendario($year, $month)
    {
  
        $this->db->select('a.*,u.nombre,u.apellido');
        $this->db->from('aviso a');
        $this->db->join('usuario u','a.id_operador=u.id_usuario');
        $this->db->like('a.dia', "$year-$month", 'after');
        $query= $this->db->get();

        $datos_calendario = array();

        foreach ($query->result() as $row) 
        {
            //si el primer número encontrado a partir del octavo
            //encontrado en la fecha es un cero, es decir, los días 
            //01,02,03 etc le quitamos el 0 y mostramos el siguiente número
            //si no lo hacemos así nuestro calendario no mostrará los resultados
            //de los días del 1 al 9
            $index = ltrim(substr($row->dia, 8, 2), '0');
            //datos calendario contiene la fila del comentario del evento de ese día
            $datos_calendario[$index] = $row->descripcion.'</br>'.$row->realiza;

           
        }
        //devolvemos los datos y así ya podemos pasarle estos datos al método genera_calendario($year, $month)
        return $datos_calendario;
    }

      public function get_actividad_calendario($year, $month)
    {

        $this->db->select('a.*,l.nombre as localidad,u.email,d.calle,d.numero,ta.nombre as tipo_actividad');
        $this->db->from('actividad a');
        $this->db->join('usuario u','a.id_operador=u.id_usuario');
        $this->db->join('direccion d','a.id_direccion=d.id_direccion');
        $this->db->join('localidad l','d.id_localidad=l.id_localidad');
        $this->db->join('tipo_actividad ta','a.id_tipoactividad=ta.id_tipoactividad');
        $this->db->like('a.fecha', "$year-$month", 'after');

        $query= $this->db->get();
        $datos_calendario = array();

       foreach ($query->result() as $row) 
        {
            //si el primer número encontrado a partir del octavo
            //encontrado en la fecha es un cero, es decir, los días 
            //01,02,03 etc le quitamos el 0 y mostramos el siguiente número
            //si no lo hacemos así nuestro calendario no mostrará los resultados
            //de los días del 1 al 9
            $index = ltrim(substr($row->fecha, 8, 2), '0');
            //datos calendario contiene la fila del comentario del evento de ese día
            $datos_calendario[$index] = $row->nombre.'</br>'.'</br>'.$row->hora.'&nbsp'.'&nbsp'.'&nbsp'.$row->tipo_actividad;

           
        }
        //devolvemos los datos y así ya podemos pasarle estos datos al método genera_calendario($year, $month)
        return $datos_calendario;
    }

    public function insert_calendario($fecha, $comentario)
    {
        $data = array(
            'fecha' => $fecha,
            'comentario' => $comentario
        );
       return $this->db->insert('eventos',$data);
    }

    public function genera_calendario_examenes( $idsede = '0',$year = null, $month = null)
    {

        //cargamos la librería calendar de codeigniter y le pasamos la 
        //configuración almacenada en el array config que hemos creado
        $this->load->library('calendar', $this->config);

        //en data obtenemos el resultado del método get_datos_calendario
        //y le pasamos para que funcione el año y el mes que realmente lo
        //recoge en la función cal del controlador como hemos visto antes
            $data = $this->get_datos_calendario($year, $month);
    

        //devolvemos nuestro calendario en funcionamiento
        return $this->calendar->generate($year, $month, $data);

    }

     public function genera_calen_aviso($year, $month)
    {
        //cargamos la librería calendar de codeigniter y le pasamos la 
        //configuración almacenada en el array config que hemos creado
        $this->load->library('calendar', $this->config);

        //en data obtenemos el resultado del método get_datos_calendario
        //y le pasamos para que funcione el año y el mes que realmente lo
        //recoge en la función cal del controlador como hemos visto antes
        $data = $this->get_aviso_calendario($year, $month);

        //devolvemos nuestro calendario en funcionamiento
        return $this->calendar->generate($year, $month, $data);

    }

    public function genera_calen_actividad($year, $month)
    {
        //cargamos la librería calendar de codeigniter y le pasamos la 
        //configuración almacenada en el array config que hemos creado
        $this->load->library('calendar', $this->config);

        //en data obtenemos el resultado del método get_datos_calendario
        //y le pasamos para que funcione el año y el mes que realmente lo
        //recoge en la función cal del controlador como hemos visto antes
        $data = $this->get_actividad_calendario($year, $month);

        //devolvemos nuestro calendario en funcionamiento
        return $this->calendar->generate($year, $month, $data);

    }

public function get_all_examenes_sede($id,$year, $month){ //retorna todas los examenes de una sede
        $this->db->select('me.*,ma.nombre');
        $this->db->from('mesas_examen me');
        $this->db->join('usuario u','me.id_operador=u.id_usuario');
        $this->db->join('materia ma','me.id_materia=ma.id_materia');
        $this->db->join('sede s','s.id_sede=u.id_sede');
        $this->db->where('s.id_sede',$id);
        $this->db->like('me.fecha', "$year-$month", 'after');
        $this->db->order_by('me.id_mesa','desc');
        $query= $this->db->get();

        $datos_calendario = array();

        foreach ($query->result() as $row) 
        {
            //si el primer número encontrado a partir del octavo
            //encontrado en la fecha es un cero, es decir, los días 
            //01,02,03 etc le quitamos el 0 y mostramos el siguiente número
            //si no lo hacemos así nuestro calendario no mostrará los resultados
            //de los días del 1 al 9            
            $index = ltrim(substr($row->fecha, 8, 2), '0');
            if (isset($datos_calendario[$index])) {
                $datos_calendario[$index] .= '<p id="dato-calendario">'.$row->nombre.'</br>'.$row->aula.'&nbsp'.'&nbsp'.$row->hora.'</p>';
            }else{
                $datos_calendario[$index] = '<p id="dato-calendario">'.$row->nombre.'</br>'.$row->aula.'&nbsp'.'&nbsp'.$row->hora.'</p>';
            }
            //datos calendario contiene la fila del comentario del evento de ese día

           
        }
        //devolvemos los datos y así ya podemos pasarle estos datos al método genera_calendario($year, $month)
        return $datos_calendario;
    }

    public function get_all_avisos_sede($id, $year, $month){ //retorna todas los avisos de una sede
        $this->db->select('a.*');
        $this->db->from('aviso a');
        $this->db->join('usuario u','a.id_operador=u.id_usuario');
        $this->db->join('sede s','s.id_sede=u.id_sede');
        $this->db->where('s.id_sede',$id);
        $this->db->like('a.dia', "$year-$month", 'after');
        $this->db->order_by('a.id_aviso','desc');
        $query= $this->db->get();

        $datos_calendario = array();

        foreach ($query->result() as $row) 
        {
            
            //si el primer número encontrado a partir del octavo
            //encontrado en la fecha es un cero, es decir, los días 
            //01,02,03 etc le quitamos el 0 y mostramos el siguiente número
            //si no lo hacemos así nuestro calendario no mostrará los resultados
            //de los días del 1 al 9
            $index = ltrim(substr($row->dia, 8, 2), '0');
            //datos calendario contiene la fila del comentario del evento de ese día
             if (isset($datos_calendario[$index])) {
                $datos_calendario[$index] .= '<p id="dato-calendario">'.$row->realiza.'</br>'.$row->descripcion.'</p>';      
            }else{
                $datos_calendario[$index] = '<p id="dato-calendario">'.$row->realiza.'</br>'.$row->descripcion.'</p>';      
            }
            
        }
        //devolvemos los datos y así ya podemos pasarle estos datos al método genera_calendario($year, $month)
        return $datos_calendario;
    }
  
public function get_all_actividades_sede($id, $year, $month){ //retorna todas los actividades de una sede
        $this->db->select('a.*,l.nombre as localidad,u.email,d.calle,d.numero,ta.nombre as tipo_actividad,s.nombre as sede');
        $this->db->from('actividad a');
        $this->db->join('usuario u','a.id_operador=u.id_usuario');
        $this->db->join('direccion d','a.id_direccion=d.id_direccion');
        $this->db->join('localidad l','d.id_localidad=l.id_localidad');
        $this->db->join('sede s','s.id_sede=u.id_sede');
        $this->db->join('tipo_actividad ta','a.id_tipoactividad=ta.id_tipoactividad');
        $this->db->where('s.id_sede',$id);
        $this->db->like('a.fecha', "$year-$month", 'after');
        $this->db->order_by('a.id_actividad','desc');
        $query= $this->db->get();

        $datos_calendario = array();

        foreach ($query->result() as $row) 
        {
            //si el primer número encontrado a partir del octavo
            //encontrado en la fecha es un cero, es decir, los días 
            //01,02,03 etc le quitamos el 0 y mostramos el siguiente número
            //si no lo hacemos así nuestro calendario no mostrará los resultados
            //de los días del 1 al 9
            $index = ltrim(substr($row->fecha, 8, 2), '0');
            //datos calendario contiene la fila del comentario del evento de ese día
            if (isset($datos_calendario[$index])) {
                $datos_calendario[$index] .= '<p id="dato-calendario">'.$row->nombre.'</br>'.$row->hora.'</p>';      
            }else{
                $datos_calendario[$index] = '<p id="dato-calendario">'.$row->nombre.'</br>'.$row->hora.'</p>';      
            }
            
        }
        //devolvemos los datos y así ya podemos pasarle estos datos al método genera_calendario($year, $month)
        return $datos_calendario;
    }
     public function genera_calendario_examenes_sedes($id, $year, $month)
    {
        //cargamos la librería calendar de codeigniter y le pasamos la 
        //configuración almacenada en el array config que hemos creado
        $this->load->library('calendar', $this->config);

        //en data obtenemos el resultado del método get_datos_calendario
        //y le pasamos para que funcione el año y el mes que realmente lo
        //recoge en la función cal del controlador como hemos visto antes
        $data = $this->get_all_examenes_sede( $id, $year, $month);

        //devolvemos nuestro calendario en funcionamiento
        return $this->calendar->generate($year, $month, $data);

    }

    public function genera_calendario_avisos_sedes($id, $year, $month)
    {
        //cargamos la librería calendar de codeigniter y le pasamos la 
        //configuración almacenada en el array config que hemos creado
        $this->load->library('calendar', $this->config);

        //en data obtenemos el resultado del método get_datos_calendario
        //y le pasamos para que funcione el año y el mes que realmente lo
        //recoge en la función cal del controlador como hemos visto antes
        $data = $this->get_all_avisos_sede( $id, $year, $month);

        //devolvemos nuestro calendario en funcionamiento
        return $this->calendar->generate($year, $month, $data);

    }
    public function genera_calendario_actividades_sedes($id, $year, $month)
    {
        //cargamos la librería calendar de codeigniter y le pasamos la 
        //configuración almacenada en el array config que hemos creado
        $this->load->library('calendar', $this->config);

        //en data obtenemos el resultado del método get_datos_calendario
        //y le pasamos para que funcione el año y el mes que realmente lo
        //recoge en la función cal del controlador como hemos visto antes
        $data = $this->get_all_actividades_sede( $id, $year, $month);

        //devolvemos nuestro calendario en funcionamiento
        return $this->calendar->generate($year, $month, $data);

    }
        


}
//end model